package com.qf.driver.api;

import com.qf.common.bean.R;
import com.qf.common.dto.DriverMqttDto;
import com.qf.driver.service.AuthService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 硬件设备认证
 * @author 千锋健哥
 */
@RestController
@RequestMapping("/driver/auth")
public class AuthController {

    @Autowired
    private AuthService authService;

    /**
     * 硬件设备登录认证
     * @param dto
     * @return
     */
    @PostMapping("/login")
    public R<DriverMqttDto> login(@RequestBody DriverMqttDto dto) {
        //1. 校验dto不能为空
        if (dto == null) {
            return R.fail("参数不可以为空!");
        }

        //2. 校验产品key, 设备key, 设备秘钥都不能为空
        if(StringUtils.isEmpty(dto.getProductKey())
                || StringUtils.isEmpty(dto.getDeviceKey())
                || StringUtils.isEmpty(dto.getDeviceSecret())) {
            return R.fail("产品key, 设备key, 设备秘钥都不可以为空!");
        }

        //3. 调用service进行认证
        R<DriverMqttDto> result = authService.login(dto);
        //4. 返回emqx服务器的url地址, 用户名, 密码, 端口号实体
        return result;
    }
}
